Keil C là một phần mềm hỗ trợ cho người dùng trong việc lập trình cho vi điều khiển các dòng khác nhau (Atmel, AVR, PIC..). Keil C giúp người dùng soạn thảo và biên dịch chương trình C hay cả ASM thành ngôn ngữ máy để nạp vào vi điều khiển giúp chúng ta tương tác giữa vi điều khiển và người lập trình.
Download KEIL C UVISION 4 and KEIL C UVISION 5
Hôm nay, mình xin giới thiệu đến các bạn các bước cài đặt phần mềm lập trình cho ARM Keil C V5. Đầu tiên các bạn tải phần mềm Keil C V5 Full crack tại đây. (Keil C – V4 làm tương tự nhé).
KEIL C UVISION v4 v5 FULL CRACK
Hướng dẫn cài đặt Keil mdk ARM
Sau khi các bạn download phần mềm Keil C về, các bạn giải nén sẽ ra thư mục KeilC V5.
Trong thư mục ARM chứa bộ cài phần mềm Keil: mdk511.exe và c51v901.exe. Vui lòng chọn 1 trong 2 để cài đặt sau đó chạy keygen để crack. Chạy file mdk511.exe
Hộp thoại cài đặt xuất hiện, các bạn chọn Next.
Tick vào ô “I agree to all the terms of the preceding License Agreement”, sau đó chọn Next.
Tiếp theo, các bạn chọn đường dẫn lưu thư mục cài đặt, sau đó chọn Next.
Tiếp theo, các bạn điền đầy đủ thông tin, và chọn Next.
Sau đó các bạn chờ để máy tự động tiến hành cài đặt.
Sau khi máy cài đặt xong, các bạn chọn Finish.
Sau đó, hộp thoại Pack Installer xuất hiện, các bạn nhấn OK.
Trong hộp thoại Pack Installer, các bạn install dòng chip các bạn đang sử dụng.
Sau khi quá trình Install kết thúc, các bạn tắt hộp thoại Pack Installer.
Tiến hành crack
Các bạn chạy chương trình Keil uVision 5 vừa cài đặt ở dạng Run as Admin, sau đó vào File License Management.
Hộp thoại License Management xuất hiện, các bạn copy mã CID.
Sau đó, các bạn vào thư mục Crack /keygen, Click chạy file keygen.exe và làm theo các bước hướng dẫn trong hình sau.
Tiếp theo, quay trở lại hộp thoại License Management , và làm theo hướng dẫn như dưới đây.
Như vậy là đã xong các bước cài đặt và crack thành công phần mềm Keil C V5 cho 8051 & ARM.
Proteus Pro 8.6 Full Portable Phần mềm giả lập mạch điện tử
Proteus Pro 8.6 là phần mềm cho phép giả lập mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển.
Proteus Pro 8.6 là phần mềm cho phép giả lập mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR…Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola.
Phần mềm Proteus Pro 8.6 bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES dùng để vẽ mạch in. Proteus là công cụ mô phỏng cho các loại Vi Điều Khiển khá tốt, nó hỗ trợ các dòng VĐK 8051, AVR, PIC, dsPIC, ARM … các giao tiếp I2C, SPI, CAN, USB, Ethenet,… ngoài ra còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả.
Proteus Pro 8.6 là một phần mềm không còn xa lạ gì cho những bạn là dân Kỹ Thuật. Nó giúp bạn có thể mô phỏng mạch điện tử một cách chính xác nhất so với các chương trình tương tự. Bạn có thể thiết kế mạch, nguyên lý hoạt động, chạy thử nghiệm, thiết kế các mạch in với giao diện cực kì trực quan, thao tác dễ dàng chỉ việc kéo thả các linh kiện, kéo thả kết nối các chân kết nối với nhau một cách nhanh chóng.
Các phần mềm trong bộ Proteus Professional 8.6
ISIS Schematic Capture- ISIS đã được nghiên cứu và phát triển trong hơn 12 năm và có hơn 12000 người dùng trên khắp thế giới. Sức mạnh của nó là có thể mô phỏng hoạt động của các hệ vi điều khiển mà không cần thêm phần mềm phụ trợ nào. Sau đó, phần mềm ISIS có thể xuất file sang ARES hoặc các phần mềm vẽ mạch in khác.Trong lĩnh vực giáo dục, ISIS có ưu điểm là hình ảnh mạch điện đẹp, cho phép ta tùy chọn đường nét, màu sắc mạch điện, cũng như thiết kế theo các mạch mẫu (templates).Những khả năng khác của ISIS là:
Tự động sắp xếp đường mạch và vẽ điểm giao đường mạch.
Chọn đối tượng và thiết lập thông số cho đối tượng dễ dàng
Xuất file thống kê linh kiện cho mạch
Xuất ra file Netlist tương thích với các chương trình làm mạch in thông dụng.
Đối với người thiết kế mạch chuyên nghiệp, ISIS tích hợp nhiều công cụ giúp cho việc quản lý mạch điện lớn, mạch điện có thể lên đến hàng ngàn linh kiện.
Thiết kế theo cấu trúc (hierachical design)
Khả năng tự động đánh số linh kiện.
Download Proteus Pro 8 gồm 2 bản: Proteus 8 Pro Full và Proteus Pro 8.6 SP2 Build 23525 Portable (nên cài) và hướng dẫn dùng phần mềm Proteus
Hướng dẫn tạo quan hệ liên kết nhiều nhiều (many to many) trong hibernate spring boot không tạo bản phụ
Many To Many Relationship Mapping with Spring Boot
Trong bài này mình sẽ hướng dẫn dùng annotation manytomany không thêm bảng phụ (trung gian) trong hibernate + spring boot + mysql
Hướng dẫn dùng annotation manytomany với bảng phụ (trung gian) trong hibernate + spring boot + mysql – đang update 🙂
Quan Hệ Liên Kết Giữa Các Đối Tượng Trong Hibernate
Association Mappings
Sau đây là bốn cách thức biểu diễn các mối quan hệ giữa các đối tượng, nó được biểu diễn theo hướng 1 chiều hoặc 2 chiều.
MAPPING TYPE
DESCRIPTION
Many-to-One
Mapping mối quan hệ nhiều – một trong Hibernate
One-to-One
Mapping mối quan hệ một – một trong Hibernate
One-to-Many
Mapping mối quan hệ một – nhiều trong Hibernate
Many-to-Many
Mapping mối quan hệ nhiều – nhiều trong Hibernate
Hướng dẫn quan hệ nhiều nhiều (many to many) hibernate jpa với Spring Boot Project
Các công nghệ sử dụng:
Spring Boot
MySQL
Hibernate JPA (Spring Data)
Các công cụ phần mềm cần:
JDK 1.8 or later
Maven 3 or later
MySQL Server 5.6 or later
Eclipse + Plugin spring suite tool
Tạo bảng trong cơ sở dữ liệu
Trong bài này chúng ta sẽ có 3 bảng trong cơ sở dữ liệu: book, publisher, book_publisher. Nhưng bên java chúng ta chỉ cần 2 entity là book.java và publisher.java thôi.
Lược đồ cơ sở dữ liệu như bạn thấy bảng phụ chỉ có 2 khóa chính của 2 bản chính. Nếu thêm 1 field vào bản phụ này thì sao? Khi đó bạn không thể làm theo hướng dẫn này mà bạn phải làm theo Hướng dẫn dùng annotation manytomany với bảng phụ (trung gian) trong hibernate + spring boot + mysql
Database jpa_manytomany code:
CREATE DATABASE IF NOT EXISTS `jpa_manytomany`; USE `jpa_manytomany`;
DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `publisher`; CREATE TABLE `publisher` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `book_publisher`; CREATE TABLE `book_publisher` ( `book_id` int(10) unsigned NOT NULL, `publisher_id` int(10) unsigned NOT NULL, PRIMARY KEY (`book_id`,`publisher_id`), KEY `fk_bookpublisher_publisher_idx` (`publisher_id`), CONSTRAINT `fk_bookpublisher_book` FOREIGN KEY (`book_id`) REFERENCES `book` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_bookpublisher_publisher` FOREIGN KEY (`publisher_id`) REFERENCES `publisher` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Cấu trúc project spring boot
Vào phần chính nào, mình dùng Eclipse + plugin Spring suite Tool để tạo project spring boot nhanh nhất.
Tạo project Spring Starter Project như hình
Sau đó thiết lập project
Sau khi tạo xong bạn sẽ thấy có class Manytomany1Application.java và file pom.xml
@Id @GeneratedValue(strategy = GenerationType.AUTO) public int getId() return id;
public void setId(int id) this.id = id;
public String getName() return name;
public void setName(String name) this.name = name;
@ManyToMany(mappedBy = "publishers") public Set<Book> getBooks() return books;
public void setBooks(Set<Book> books) this.books = books;
Mình sẽ giải thích một chút nhá!
@Entity khai báo đây là thực thể tương ứng với bảng trong cơ sở dữ liệu.
@Table dùng để maps các class java với bảng trong cơ sở dữ liệu theo tên. Ví dụ:
@Table(name = "bai") public class Bai
Nếu bạn không khai báo tên trong @Table thì nó ngầm định bạn dùng tên bảng giống tên class.
@Id khai báo này cho biết thuộc tính này là khóa chính.
@Column dùng để maps với các field trong bảng cơ sở dữ liệu. Nếu bạn để trống, không khai báo thì nó ngầm định tên thuộc tính trong class tương ứng với tên field trong bảng.
@ManyToMany khai báo quan hệ many-to-many giữa 2 thực thể. Ví dụ cụ thể: quan hệ nhiều nhiều giữa book và publisher, nên trong class Book sẽ có danh sách các publisher và ngược lại.
@JoinTable thường đi chung với khai báo quan hệ liên kết Association Mappings. Được hiểu là kết với bảng nào. Ví dụ bảng book sẽ kết với bảng book_publisher qua cột ( @JoinColumn ) book_id và tham chiếu cột còn lại là: publisher_id
mappedBy được dùng bên bảng còn lại là publisher nói rằng sẽ maps với thuộc tính publishers bên bảng book. Ví dụ bên dưới!
@ManyToMany(mappedBy = "publishers") public Set<Book> getBooks() return books;
Tạo Spring Data JPA Repository
Sau khi tạo xong các class trong Model, chúng ta sẽ tạo Repository cho các class tương ứng. Ở đây mình làm nhanh để tập trung vào phần hibernate many to many nên không có class Service hay Implement nhá!
Spring Data JPA chứa một số kho tích hợp để thực hiện một số chức năng phổ biến để làm việc nhanh với cơ sở dữ liệu như: findOne, findAll, save, …
Tạo class BookRepository.java trong package com.qlam.demo.repository
@Test @Transactional public void contextLoads() // save a couple of books Publisher publisherA = new Publisher("Publisher A"); Publisher publisherB = new Publisher("Publisher B"); Publisher publisherC = new Publisher("Publisher C");
bookRepository.save(new HashSet<Book>()
add(new Book("Book A", new HashSet<Publisher>()
add(publisherA); add(publisherB);
));
add(new Book("Book B", new HashSet<Publisher>()
add(publisherA); add(publisherC);
));
);
// fetch all books for (Book book : bookRepository.findAll()) logger.info("\n" + book.toString());
// save a couple of publishers Book bookA = new Book("Book A"); Book bookB = new Book("Book B");
publisherRepository.save(new HashSet<Publisher>()
add(new Publisher("Publisher A", new HashSet<Book>()
add(bookA); add(bookB);
));
add(new Publisher("Publisher B", new HashSet<Book>()
add(bookA); add(bookB);
));
);
// fetch all publishers for (Publisher publisher : publisherRepository.findAll()) logger.info("\n"+publisher.toString());
Để chạy project spring boot bạn chọn theo hình dưới!
Kết quả chạy, mình chỉ copy phần chính thôi!
2017-10-02 15:17:52.498 INFO 11172 --- [ main] c.qlam.demo.Manytomany1ApplicationTests : Started Manytomany1ApplicationTests in 7.008 seconds (JVM running for 8.777) 2017-10-02 15:17:52.551 INFO 11172 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context [DefaultTestContext@2698dc7 testClass = Manytomany1ApplicationTests, testInstance = com.qlam.demo.Manytomany1ApplicationTests@6c0b51da, testMethod = contextLoads@Manytomany1ApplicationTests, testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@43d7741f testClass = Manytomany1ApplicationTests, locations = '', classes = 'class com.qlam.demo.Manytomany1Application', contextInitializerClasses = '[]', activeProfiles = '', propertySourceLocations = '', propertySourceProperties = 'org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@3bfdc050, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@5c3bd550, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@6a4f787b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3fee9989], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@5b0dbfb]; rollback [true] Hibernate: insert into book (name) values (?) Hibernate: insert into publisher (name) values (?) Hibernate: insert into publisher (name) values (?) Hibernate: insert into book (name) values (?) Hibernate: insert into publisher (name) values (?) 2017-10-02 15:17:53.386 INFO 11172 --- [ main] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory Hibernate: select book0_.id as id1_0_, book0_.name as name2_0_ from book book0_ Hibernate: select publishers0_.book_id as book_id1_1_0_, publishers0_.publisher_id as publishe2_1_0_, publisher1_.id as id1_2_1_, publisher1_.name as name2_2_1_ from book_publisher publishers0_ inner join publisher publisher1_ on publishers0_.publisher_id=publisher1_.id where publishers0_.book_id=? 2017-10-02 15:17:53.887 INFO 11172 --- [ main] com.qlam.demo.Manytomany1Application : Book [id=15, name='Book B'] Publisher[id=19, name='Publisher C'] Publisher[id=20, name='Publisher A']
Hibernate: select publishers0_.book_id as book_id1_1_0_, publishers0_.publisher_id as publishe2_1_0_, publisher1_.id as id1_2_1_, publisher1_.name as name2_2_1_ from book_publisher publishers0_ inner join publisher publisher1_ on publishers0_.publisher_id=publisher1_.id where publishers0_.book_id=? 2017-10-02 15:17:53.900 INFO 11172 --- [ main] com.qlam.demo.Manytomany1Application : Book [id=16, name='Book A'] Publisher[id=21, name='Publisher B'] Publisher[id=20, name='Publisher A']
2017-10-02 15:17:53.900 INFO 11172 --- [ main] com.qlam.demo.Manytomany1Application : Book [id=17, name='Book A'] Publisher[id=22, name='Publisher B'] Publisher[id=23, name='Publisher A']
2017-10-02 15:17:53.901 INFO 11172 --- [ main] com.qlam.demo.Manytomany1Application : Book [id=18, name='Book B'] Publisher[id=24, name='Publisher C'] Publisher[id=23, name='Publisher A']
Hibernate: insert into publisher (name) values (?) Hibernate: insert into publisher (name) values (?) Hibernate: select publisher0_.id as id1_2_, publisher0_.name as name2_2_ from publisher publisher0_ 2017-10-02 15:17:53.925 INFO 11172 --- [ main] com.qlam.demo.Manytomany1Application : com.qlam.demo.model.Publisher@79ab97fd
Video chi tiết Hướng dẫn annotation many to many Hibernate Spring Boot không bản phụ
Xong rồi, qua bài Hướng dẫn tạo quan hệ liên kết nhiều nhiều (many to many) trong hibernate spring boot không tạo bản phụ bạn đã biết cách dùng project spring boot với annotation manytomany trong hibernate. Trong bài tiếp theo mình sẽ Hướng dẫn dùng annotation manytomany với bảng phụ (trung gian) trong hibernate + spring boot + mysql – đang update!