Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Xử lý java khi saveall vào database 1 danh sách có nhiều dữ liệu
1. Em có thể lưu dữ liệu tạm ở Local và sau đó save dần dần: tuy nhiên cách này đòi hỏi em phải cứng tay 1 chút trong xử lý I/O cụ thể là làm việc với File, cũng có rủi ro là cái server local có thể bị hết disk. 2. Em có thể sử dụng kafka, em cứ push dữ liệu và kafka, sau đó ở ở đầu consumer, em sẽRead more
1. Em có thể lưu dữ liệu tạm ở Local và sau đó save dần dần: tuy nhiên cách này đòi hỏi em phải cứng tay 1 chút trong xử lý I/O cụ thể là làm việc với File, cũng có rủi ro là cái server local có thể bị hết disk.
See less2. Em có thể sử dụng kafka, em cứ push dữ liệu và kafka, sau đó ở ở đầu consumer, em sẽ lấy ra dần dần và save vào db: cách này thì đơn giản nhưng lại phát sinh thêm chi phí hạ tầng.
Nhiều instance service websocket ?
Hiện tại anh thấy có 1 giải pháp hay được dùng đó là em sẽ dùng kafka hoặc rabbitMQ hoặc activeMQ hoặc redis để broadcast message đến tất cả các server khi có tin nhắn đến, user kết nối đến server nào thì sẽ nhận được message ở server đó, cách này có vẻ là hiệu năng sẽ tương đối cao.
Hiện tại anh thấy có 1 giải pháp hay được dùng đó là em sẽ dùng kafka hoặc rabbitMQ hoặc activeMQ hoặc redis để broadcast message đến tất cả các server khi có tin nhắn đến, user kết nối đến server nào thì sẽ nhận được message ở server đó, cách này có vẻ là hiệu năng sẽ tương đối cao.
See lessHỏi về queue ?
Với kafka em có thể set props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 1);, so đó poll đủ số lượng em cần thì thôi em ạ. Ví dụ: List buffer = new ArrayList(); while (true) { final ConsumerRecords consumerRecords = consumer.poll(1000); if (consumerRecords.count() > 0) { buffer.add(rs.iterator()Read more
Với kafka em có thể set
See lessprops.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 1);
, so đó poll đủ số lượng em cần thì thôi em ạ. Ví dụ:Tạo rồi xóa hay cập nhật, cái nào sẽ tốn resource hơn ?
Cái này thì nên tuỳ theo dự án và tính chất của data em ạ: 1. Đối với những dữ án mà em cam kết với người dùng là sẽ toàn bộ dữ liệu của họ khi họ yêu cầu thì em sẽ phải xoá, nếu em cam kết là xoá nhưng em chỉ cập nhật active = false thì việc này lộ ra thì công ty em sẽ gặp vấn đề rất rất nghiêm trọRead more
Cái này thì nên tuỳ theo dự án và tính chất của data em ạ:
1. Đối với những dữ án mà em cam kết với người dùng là sẽ toàn bộ dữ liệu của họ khi họ yêu cầu thì em sẽ phải xoá, nếu em cam kết là xoá nhưng em chỉ cập nhật active = false thì việc này lộ ra thì công ty em sẽ gặp vấn đề rất rất nghiêm trọng, đối với những công ty ở thị trường Nhật chẳng hạn có thể bị phá sản ngay lập tức.
2. Trong trường hợp em chỉ cam kết là lưu trữ thông tin người dùng thì.
2.1 Đối với các data quan trọng như thông tin người dùng, lịch sử giao dịch thì nên giữ lại (active = false) và sau đó move sang 1 database chuyên backup để phục vụ cho các nghiệp vụ tra cứu, đối soát hay các hệ thống bigdata và AI sau này.
2.2. Đối với các data không quan trọng như session token, thì khi hết hạn thì có thể xoá đi được em ạ, để lại cũng chẳng để làm gì.
See lessLàm sao để cấu hình tới 2 database trong 1 project spring boot?
Khi sử dụng sẽ kiểu thế này: import javax.sql.DataSource; @Configuration @EnableConfigurationProperties(HibernateProperties.class) @ImportAutoConfiguration(RepositoryPropertiesConfig.class) public class EzyJpaConfig { @Autowired private ApplicationContext appContext; public static final String EXAMPRead more
Khi sử dụng sẽ kiểu thế này:
See lessCách hòa nhập nhanh khi tham gia dự án có code-base lớn
May quá anh cũng đang làm trong dự án to đùng đùng nên có thể chia sẻ được cho em: Đầu tiên chắc chắn là em sẽ được training về nghiệp vụ, overview, tech stack của dự án rồi Sau đó bọn anh bao giờ cũng có 1 task gọi là bootcamp, task này thường kéo dài khoảng 2 đến 3 tháng, em sẽ tìm 1 phần việc nàoRead more
May quá anh cũng đang làm trong dự án to đùng đùng nên có thể chia sẻ được cho em:
Q1: Khi code-base quá lớn thì chúng ta nên bắt đầu từ việc tự vẽ lại system architecture của dự án, module diagram của dự án, dùng sản phẩm, vẽ lại một số luồng quan trọng
Q2: Nếu hỏi và yêu cầu trợ giúp thì nên tạo wiki, hoặc nêu rõ nội dung mình cần hỏi là gì. Không biết bên em thế nào, chứ bên anh rất nice, mọi người cứ hỏi thôi, không rõ thì hỏi lại cũng không cần quan trọng lắm, nhưng để em nhận được câu trả lời nhanh nhất thì tốt nhất em nên đặt một câu hỏi với đầy đủ nội dung kiểu: tôi đang đọc/làm chức năng này, tôi đã làm thế này, hiện tại tôi đang gặp vấn đề ở chỗ này, các bạn giúp tôi với, kiểu vậy.
See lessXóa 1 file trong toàn bộ commit của tất cả các branch
Chỉ có 1 cách duy nhất đó là: 1. em dừng code lại 2. backup code ra 1 folder khác 3. trở về điểm commit mà chưa add file đó vào bằng lệnh git reset --hard mã_commit-của_em 4. copy các file khác vào ngoại trừ file 400MB đó 5. commit và git push tên_branch -f 6. Tiếp tục code Rất tiếc cho em, anh cũngRead more
Chỉ có 1 cách duy nhất đó là:
1. em dừng code lại
2. backup code ra 1 folder khác
3. trở về điểm commit mà chưa add file đó vào bằng lệnh
git reset --hard mã_commit-của_em
4. copy các file khác vào ngoại trừ file 400MB đó
5. commit và
git push tên_branch -f
6. Tiếp tục code
Rất tiếc cho em, anh cũng đã từng bị thế này em ạ, 😀
See lessVolatile boolean khác gì AtomicBoolean
1. Volatile: là một dạng biến thông báo, nghĩa là nó được dùng để các thread thông báo cho nhau rằng biến có sự thay đổi giá trị, tuy nhiên nó không đảm bảo được là giá trị của biến sẽ được đồng bộ Ví dụ thông báo: public class VolatileExample { private volatile boolean active; public void prepare()Read more
1. Volatile: là một dạng biến thông báo, nghĩa là nó được dùng để các thread thông báo cho nhau rằng biến có sự thay đổi giá trị, tuy nhiên nó không đảm bảo được là giá trị của biến sẽ được đồng bộ
Ví dụ thông báo:
Nếu bạn bỏ từ khoá
volatile
thì hàmSystem.out.println("application started");
sẽ không bao giờ được in raVí dụ không đảm bảo đồng bộ giá trị:
nó sẽ in ra ngẫu nhiên, có thể là
979638
2. AtomicBoolean: vừa có khả năng thông báo vừa đảm bảo giá trị sẽ được đồng bộ, vì bên trong nó sử dụng
private volatile int value;
, nên trong ví dụ trên, bạn cũng có thể sử dụng thế này:Ví dụ thông báo:
Ví dụ đông bộ dữ liệu:
nó sẽ in ra
See less1000000
Cách tạo mock ScheduledExecutorService cho EzyAppContext khi test
em khởi tạo như vậy là đúng rồi em ạ em mock tiếp thế này: ScheduledExecutorService executorService = mock(ScheduledExecutorService.class); when(context.get(ScheduledExecutorService.class)).thenReturn(executorService); em nhé
em khởi tạo như vậy là đúng rồi em ạ em mock tiếp thế này:
em nhé
See less