这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例。
配置文件
pom包配置
pom包里面添加jpa和thymeleaf的相关包引用
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
在application.properties中添加配置
spring.datasource.url = jdbc:mysql://localhost:3309/springboot?useSSL\=false&characterEncoding\=UTF-8&autoReconnect\=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#启动时会根据实体类生成数据表,或者更新表结构,不清空数据,开发阶段使用;validate:表结构稳定后使用,可用于正式环境;
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
# 控制台打印sql
spring.jpa.show-sql= true
spring.thymeleaf.cache=false
其中propertiesspring.thymeleaf.cache=false
是关闭thymeleaf的缓存,不然在开发过程中修改页面不会立刻生效需要重启,生产可配置为true。
在项目resources目录下会有两个文件夹:static目录用于放置网站的静态内容如css、js、图片;templates目录用于放置项目使用的页面模板。
启动类
启动类需要添加Servlet的支持
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
@SpringBootApplication
//若打包成war包,则需要继承SpringBootServletInitializer类,覆盖其configure(SpringApplicationBuilder)方法
public class JpaThymeleafApplication extends SpringBootServletInitializer {
//添加servlet依赖
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
return application.sources(JpaThymeleafApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(JpaThymeleafApplication.class, args);
}
}
数据库层代码
实体类映射数据库表
@Entity
@Table(name="user")
public class UserDo {
@Id @GeneratedValue
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
继承JpaRepository类会自动实现很多内置的方法,包括增删改查。也可以根据方法名来自动生成相关sql
public interface UserRepository extends JpaRepository {
UserDo findById(Integer id);
Integer deleteById(Integer id);
}
业务层处理
service调用jpa实现相关的增删改查,实际项目中service层处理具体的业务代码。
@Service
public class UserService {
@Resource
private UserRepository userRepository;
public List getUserList(){
return userRepository.findAll();
}
public UserDo findUserById(Integer id){
return userRepository.findById(id);
}
@Transactional
public UserDo saveUser(UserDo user){
return userRepository.save(user);
}
@Transactional
public UserDo editUser(UserDo user){
return userRepository.save(user);
}
@Transactional
public Integer deleteUser(Integer id){
return userRepository.deleteById(id);
}
}
注意,需要事务处理的方法需要注解@Transactional,否则后面调用时可能会出现报错。
Controller负责接收请求,处理完后将页面内容返回给前端。
@Controller
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/")
public String index() {
return "redirect:/list";//页面重定向到list
}
@RequestMapping("/list")
public String list(Model model){
List userList = userService.getUserList();
model.addAttribute("userList", userList);
return "user/list";//代表会直接去resources目录下找相关的文件
}
@RequestMapping("/toAdd")
public String toAdd(UserDo user){
return "user/userAdd";
}
@RequestMapping("/add")
public String add(UserDo user) {
userService.saveUser(user);
return "redirect:/list";
}
@RequestMapping("/toEdit")
public String toEdit(Model model, Integer id){
UserDo user = userService.findUserById(id);
model.addAttribute("user", user);
return "user/userEdit";
}
@RequestMapping("/edit")
public String edit(UserDo user) {
userService.editUser(user);
return "redirect:/list";
}
@RequestMapping("/delete")
public String delete(Integer id) {
userService.deleteUser(id);
return "redirect:/list";//删除内容之后自动调整到list请求,然后再输出到页面。
}
}
return "user/userEdit";
代表会直接去resources目录下找相关的文件。
return "redirect:/list";
代表转发到对应的controller,这个示例就相当于删除内容之后自动调整到list请求,然后再输出到页面。
页面内容
在resource/templates下创建user文件夹
在user文件夹下创建list.html
userList
用户列表
#
UserName
Edit
Delete
编辑
删除
效果图:
这里会从controler层model set的对象去获取相关的内容,th:each
表示会循环遍历对象内容。
其实还有其它的写法,读者可以去学习尝试其他写法
在同级目录下添加userAdd作为添加用户界面:
userAdd
添加用户
同理添加userEdit页面作为编辑页面
user
修改用户
效果图:
这样一个使用jpa和thymeleaf的增删改查示例就完成了。
你可能感兴趣的:(微服务)
Eureka vs Zookeeper:谁才是微服务世界的“寻人启事”之王?
码农技术栈
eureka zookeeper 微服务 架构 spring cloud
引言:为什么需要“服务发现”?想象一下,你走进一家巨大的购物中心,里面有1000家店铺,但没有任何地图或指示牌。你需要找到一家奶茶店,却只能挨家挨户敲门问路——这就是没有服务发现的微服务世界。服务发现(ServiceDiscovery)就像购物中心的智能导航系统:它能自动告诉你奶茶店的位置、哪家正在营业,甚至哪家人最少。而Eureka和Zookeeper就是两套不同的“导航系统”,但它们的底层逻辑
Eureka、Zookeeper、Nacos 三国杀:谁才是微服务“全家桶”的终极答案?
码农技术栈
eureka zookeeper 微服务 spring cloud spring boot 后端
引言:微服务世界的“三大护法”如果你在微服务领域摸爬滚打过,一定听过这三个名字:Eureka、Zookeeper、Nacos。它们看似都解决了“服务发现”问题,但背后的定位天差地别——Eureka是Netflix的“退休老干部”(已停更),主打高可用;Zookeeper是Apache的“强迫症管家”,专注强一致性;Nacos是阿里的“全能新秀”,号称“服务发现+配置管理”二合一。到底怎么选?我们通
Java微服务的注册中心Nacos
铁锤学代码
微服务 java 微服务 开发语言
文章目录Nacos的主要作用Nacos实现动态配置更新的技术Nacos实现CAPNacos实现CAP原理Nacos使用Distro和Raft分别干什么用?ZAB与Raft的区别Nacos的主要作用配置中心:可以将微服务中的一些配置信息放到Nacos进行统一管理,也可以通过Nacos实现动态配置管理。也可以将不同环境的配置放在不同的Namespace下的group下,实现动态选择配置发布部署。服务注
Spring Boot 集成 Kafka
m0_74823471
面试 学习路线 阿里巴巴 spring boot kafka linq
在现代软件开发中,分布式系统和微服务架构越来越受到关注。为了实现系统之间的异步通信和解耦,消息队列成为了一种重要的技术手段。Kafka作为一种高性能、分布式的消息队列系统,被广泛应用于各种场景。而SpringBoot作为一种流行的Java开发框架,提供了便捷的方式来构建应用程序。本文将介绍如何在SpringBoot项目中集成Kafka,包括Kafka的基本概念、SpringBoot集成Kafka的
分布式服务发现与注册中心 Consul
要加油呀
中间件 java-consul consul java
分布式服务发现与注册中心Consulgithub地址:https://github.com/consul/consul基础概念什么是注册中心随着微服务理论发展的成熟,越来越多互联网公司采用微服务架构来支持业务发展。各个微服务之间都需要通过注册中心来实现自动化的注册和发现。注册中心主要有三种角色:服务提供者(RPCServer):在启动时,向Registry注册自身服务,并向Registry定期发送
分布式系统架构设计原理与实战:理解分布式系统的基本概念
AI天才研究院
计算 大数据 人工智能 语言模型 AI LLM Java Python 架构设计 Agent RPA
1.背景介绍在当今的互联网时代,数据量的爆炸性增长和业务的快速发展,使得单一的计算机系统已经无法满足我们的需求。为了解决这个问题,分布式系统应运而生。分布式系统是一种能在多台计算机(也称为节点)上运行,并通过网络进行通信和协调的系统。它能够提供高可用性、高可靠性、高扩展性和高性能等特性,因此在云计算、大数据、微服务等领域得到了广泛的应用。然而,设计和实现一个分布式系统并不是一件容易的事情。它涉及到
【Java 面试 八股文】Spring Cloud 篇
落啦啦
java java 面试 spring cloud
SpringCloud篇1.SpringCloud5大组件有哪些?2.服务注册和发现是什么意思?SpringCloud如何实现服务注册发现?3.我看你之前也用过nacos,你能说下nacos与eureka的区别?4.你们项目负载均衡如何实现的?5.Ribbon负载均衡策略有哪些?6.如果想自定义负载均衡策略如何实现?7.什么是服务雪崩,怎么解决这个问题?8.你们的微服务是怎么监控的?9.你们项目中
分布式服务注册与发现
点滴~
面试 大型网站技术架构 分布式 分布式
目录核心概念常见实现方式常见工具与框架优点挑战应用场景总结分布式服务注册与发现是微服务架构中的关键组件,用于动态管理服务的注册、发现和调用。它帮助服务在分布式环境中自动找到彼此,确保系统的高可用性和可扩展性。核心概念服务注册:服务启动时向注册中心注册自己的信息(如服务名、IP、端口等)。注册中心维护服务实例的元数据。服务发现:客户端或服务消费者通过注册中心查找目标服务的实例信息。支持动态获取服务的
springboot+dubbo+zookeeper搭建微服务框架基础
2401_89285764
java-zookeeper spring boot dubbo
org.apache.maven.pluginsmaven-compiler-plugin${java.version}${java.version}UTF-8org.apache.maven.pluginsmaven-resources-pluginUTF-8parent父工程到这里就可以不动他了,如果你的子模块有变动再更新三、创建common模块对parent项目创建cmmon子模块,comm
从阿里云EDM到美团云:典型微服务治理平台的实战经验分享
码农老起
微服务 架构 云原生
目录一.阿里云EDM(EnterpriseDistributedApplicationService)二.腾讯云TSF(TencentServiceFramework)三.华为云FusionStage四.京东云JDC(JDCloudMicroservicePlatform)五.百度智能云CloudStack六.字节跳动Tinker七.小米云平台八.美团云服务平台随着微服务架构的广泛应用,微服务治理
微服务架构与传统的单体架构有什么区别?微服务架构(Spring Cloud + Maven)强在哪?
瑞金彭于晏
架构 微服务 spring cloud
微服务架构与传统的单体架构(SpringBoot+Maven项目)在设计和实现上有显著差异,主要体现在系统拆分方式、部署模式、技术栈选择、维护成本等方面。以下是具体对比:1.架构设计维度单体架构微服务架构系统拆分所有功能模块集中在一个项目中(单进程、单代码库)。按业务功能拆分为多个独立服务(每个服务是一个独立进程、独立代码库)。模块化通过Maven多模块管理代码,但最终打包为一个JAR/WAR。每
Kubernetes 从入门到精通:解锁容器编排的终极指南 [特殊字符]
a小胡哦
kubernetes 容器 云原生
为什么需要Kubernetes?Kubernetes(简称K8s)是容器编排领域的王者,它能帮你:自动扩缩容:流量激增时自动扩展应用实例(HorizontalPodAutoscaler)自愈能力:崩溃的容器秒级重启,节点故障自动迁移(Self-Healing设计)服务发现:动态管理微服务通信(Service机制)存储编排:一键挂载云存储/本地磁盘(PersistentVolumes)跨环境部署:一
基于Prometheus和Grafana的现代服务器监控体系构建
丁爸
运维 服务器
1.简介1.1.概述基于Prometheus和Grafana的现代服务器监控体系是一种高效、灵活的监控解决方案,广泛应用于云计算和微服务架构的环境中。以下是这一监控体系的概述:Prometheus:Prometheus是一个开源的系统监控和警报工具包,由SoundCloud开发并维护。它具有强大的数据收集能力、灵活的查询语言以及与微服务架构的无缝集成。Prometheus的核心概念包括时间序列数据
Spring Boot从入门到精通:一站式掌握企业级开发
一位卑微的码农
spring boot 后端 java
前言SpringBoot作为Java领域最流行的微服务框架,凭借其约定优于配置的理念和快速启动的特性,极大简化了Spring应用的初始搭建和开发过程。本文将带你从零开始系统学习SpringBoot,最终实现精通级应用开发,涵盖核心原理、实战技巧及性能优化。一、SpringBoot入门篇1.SpringBoot简介核心优势:自动配置、内嵌服务器(Tomcat/Jetty)、Starter依赖简化适用
Spring Cloud中如何使用Eureka:超详细指南
一位卑微的码农
spring cloud eureka java
引言在微服务架构中,服务发现是一个至关重要的组件。它允许服务实例在启动时注册自己,并且能够发现其他服务实例的位置。SpringCloud提供了多种服务发现的实现方式,其中Eureka是最常用的之一。本文将深入探讨如何在SpringCloud中使用Eureka进行服务注册与发现,涵盖从基础到高级的配置和使用场景。什么是Eureka?Eureka是Netflix开源的服务发现组件,SpringClou
高并发微服务日志管理:ELK、Loki、Fluentd 终极对决与实战指南
网罗开发
java集 后端 云原生 微服务 elk 架构
网罗开发(小红书、快手、视频号同名) 大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO
9. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--请求聚合
喵叔哟
.NET 8 .net 微服务 架构
在微服务架构中,请求聚合的核心意义在于优化客户端与后端服务的交互效率,解决多服务协同的复杂性。通过将多个微服务的调用合并为单一请求,聚合层(如BFF或网关)可显著减少网络传输次数、降低延迟,同时统一数据格式以适配不同客户端(如移动端、Web端)的差异化需求。例如,移动端展示订单详情时,聚合层可并行调取用户、商品和物流服务的数据,整合后返回精简结果,避免客户端频繁发起请求。此外,聚合层还能处理数据裁
Spring Cloud 面试题及答案整理,最新面试题
扫地僧009
互联网大厂面试题 spring cloud spring 后端 面试
SpringCloud中断路器的原理及其作用是什么?SpringCloud断路器的原理和作用基于以下几个关键点:1、故障隔离机制:在微服务架构中,断路器作为一种故障隔离机制,当某个服务实例出现问题时,断路器会“断开”这个实例,防止故障蔓延到其他服务。2、快速失败机制:当断路器打开时,对该服务的调用将会快速失败而不是等待,从而避免资源浪费和延迟。3、服务降级:在断路器打开时,可以为用户提供备选的响应
Feign 类型转换问题解析:如何正确处理 `ResponseEntity<byte[]>` 返回值
劲雨波
RPC框架 java spring rpc spring boot
在微服务架构中,Feign是一种常见的用于服务间调用的客户端,它允许我们通过声明式接口来调用远程服务。使用Feign时,我们通常通过接口方法的返回类型来接收服务的响应体。然而,某些情况下,我们会遇到Feign无法正确解析响应体类型的问题,尤其是当服务返回一个如ResponseEntity类型的响应,而客户端的方法声明使用了Object类型时。本文将分析Feign在处理这种情况时可能出现的问题,并提
DeepSeek 提示词:基础结构
伏羲栈
人工智能 deepseek 提示词 人工智能
博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分
skywalking前端_SkyWalking
智能迷宫
skywalking前端
Skywalking(简称SW)是分布式系统的应用程序性能监视(APM)工具,专为微服务、云原生和容器架构而设计,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。通过探针自动收集所需的指标,并进行分布式追踪,具有无代码嵌入,支持众多中间件,agent种类全面,性能消耗低等优点。下载在github的Skywalking项目中下载最新版安装包官网地址解压部署tar-zxvfapach
猫眼在腾讯云北极星上的最佳实践
微服务腾讯云
导语在当前互联网行业飞速发展的背景下,企业对高效、稳定、灵活的服务治理方案需求愈发迫切。猫眼作为领先的互联网票务企业,通过采用腾讯云北极星(Polaris),成功优化了其微服务架构,实现了显著的性能提升和故障容错能力增强。通过将注册配置中心从Nacos迁移至北极星,猫眼解决了多项技术瓶颈问题,在同等规格下,承载的服务注册数更多,注册发现性能提高了30%,并显著提升了系统的扩展性和稳定性。业务背景介
【腾讯云中间件】2023年热门文章集锦
各位读者,大家好!光阴似箭,日月如梭,仿佛冬奥会的盛况还在眼前,新的一年却即将到来。在过去的一年里,我们见证了腾讯云中间件在产品升级与创新方面的显著进步,包括消息队列TDMQ品牌全新升级和新产品发布,微服务引擎升级与异地多活单元化能力发布等。腾讯云中间件团队一直秉承持续创新的精神,致力于为行业带来更加优质的产品和服务。在过去的一年里,我们见证了产品升级与创新带来的显著成果。团队不断优化产品性能,提
实战探秘Nginx的六大应用场景与配置指南,让网络服务如虎添翼
IT运维先森
nginx nginx 运维
在云原生和微服务架构盛行的今天,Nginx作为高性能、高并发的Web服务器和反向代理软件,已成为众多开发运维人员不可或缺的工具。本文将深入探讨Nginx在六个关键应用场景中的实战运用,并配以详尽的配置示例,帮助您更好地驾驭这款强大的网络服务引擎。一、负载均衡应用场景:当面对大量用户访问时,通过Nginx实现后端服务器集群间的负载均衡,可有效分散请求压力,保障服务稳定性和响应速度。配置示例:http
如何使用Kafka构建事件驱动的架构
master_chenchengg
能力提升 面试宝典 技术 IT信息化
如何使用Kafka构建事件驱动的架构了解ApacheKafka的基础概念设计事件驱动架构的基本原则使用Kafka进行事件流处理的优势构建事件驱动微服务的最佳实践安全性考量与最佳实践扩展性和性能优化技巧实际案例分析:从理论到实践未来趋势展望:Kafka在新兴技术领域的应用了解ApacheKafka的基础概念在深入探讨如何利用Kafka构建事件驱动架构之前,我们需要先理解其核心组件。Kafka中最为重
ProGuard加密混淆SpringBoot应用代码
lbmydream
spring boot 后端 java
背景我们的项目是基于SpringCloud架构的微服务应用,采用Docker离线部署方式交付客户,通过授权证书来控制应用的许可功能模块和使用时间。我们已经在代码层已经实现:基于多维度硬件指纹的绑定验证,cpuid、mac地址、磁盘序列、系统时钟、应用初始时间等双重时间验证机制(系统时间+硬件时钟)安全续期机制支持离线更新防调试/防篡改保护来解决离线容器化部署Java应用程序授权问题。整体流程如下:
探秘MoonMQ:一款高速分布式消息队列系统
蒙丁啸Sharp
探秘MoonMQ:一款高速分布式消息队列系统moonmqafastdistributedmessagequeueimplementedwithgo项目地址:https://gitcode.com/gh_mirrors/mo/moonmq在当今的微服务架构和高并发场景下,消息队列作为连接各个服务的桥梁,其重要性不言而喻。今天,我们要向大家隆重推荐一个基于Go语言实现的高速分布式消息队列——MoonM
2025年,微服务架构和大模型能“玩出”什么新花样?
2025年开年,DeepSeek开源模型以“低成本、高性能”成功掀起AI平价化浪潮,并以惊人的速度渗透至各个领域。在AI平价化浪潮的推动下,微服务架构正迎来前所未有的变革机遇。微服务架构通过将系统拆解为多个小型、独立的服务,每个服务运行在自己的进程中,负责特定的业务功能。与单体架构相比,微服务架构实现了更高的灵活性、可扩展性和可维护性,这些特性使其成为现代软件开发的首选。然而,随着企业应用规模和复
短视频矩阵服务架构指南
李lrh9166
架构
高效微服务架构设计指南技术架构设计在技术架构设计方面,本系统采用了微服务架构,以增强系统的可维护性和扩展性。每个服务都可以独立部署和扩展,从而提高了系统的整体灵活性和响应速度。API网关作为系统的入口,负责请求路由、负载均衡、认证和授权等功能。此外,系统还采用多租户设计,确保数据隔离,每个租户的数据是独立的,但可以共享基础架构,从而实现资源的高效利用。在数据存储方面,系统使用分布式数据库或云数据库
Docker 的安全配置与优化(一)
计算机毕设定制辅导-无忧学长
# Docker docker 安全 php
引言在当今快速发展的云计算和DevOps时代,Docker作为容器化技术的佼佼者,已经成为现代开发和运维的基石。它以其独特的优势,如环境隔离、快速部署、资源高效利用等,极大地改变了软件交付和运行的方式。在微服务架构中,每个微服务都可以被封装成一个独立的Docker容器,实现了服务的隔离和独立部署,使得系统的扩展性和维护性得到了极大的提升。同时,在持续集成和持续交付(CI/CD)流程中,Docker
分享100个最新免费的高匿HTTP代理IP
mcj8089
代理IP 代理服务器 匿名代理 免费代理IP 最新代理IP
推荐两个代理IP网站:
1. 全网代理IP:http://proxy.goubanjia.com/
2. 敲代码免费IP:http://ip.qiaodm.com/
120.198.243.130:80,中国/广东省
58.251.78.71:8088,中国/广东省
183.207.228.22:83,中国/
mysql高级特性之数据分区
annan211
java 数据结构 mongodb 分区 mysql
mysql高级特性
1 以存储引擎的角度分析,分区表和物理表没有区别。是按照一定的规则将数据分别存储的逻辑设计。器底层是由多个物理字表组成。
2 分区的原理
分区表由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们可以直接访问各个分区。存储引擎管理分区的各个底层
表和管理普通表一样(所有底层表都必须使用相同的存储引擎),分区表的索引只是
JS采用正则表达式简单获取URL地址栏参数
chiangfai
js 地址栏参数获取
GetUrlParam:function GetUrlParam(param){
var reg = new RegExp("(^|&)"+ param +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null
怎样将数据表拷贝到powerdesigner (本地数据库表)
Array_06
powerDesigner
==================================================
1、打开PowerDesigner12,在菜单中按照如下方式进行操作
file->Reverse Engineer->DataBase
点击后,弹出 New Physical Data Model 的对话框
2、在General选项卡中
Model name:模板名字,自
logbackのhelloworld
飞翔的马甲
日志 logback
一、概述
1.日志是啥?
当我是个逗比的时候我是这么理解的:log.debug()代替了system.out.print();
当我项目工作时,以为是一堆得.log文件。
这两天项目发布新版本,比较轻松,决定好好地研究下日志以及logback。
传送门1:日志的作用与方法:
http://www.infoq.com/cn/articles/why-and-how-log
上面的作
新浪微博爬虫模拟登陆
随意而生
新浪微博
转载自:http://hi.baidu.com/erliang20088/item/251db4b040b8ce58ba0e1235
近来由于毕设需要,重新修改了新浪微博爬虫废了不少劲,希望下边的总结能够帮助后来的同学们。
现行版的模拟登陆与以前相比,最大的改动在于cookie获取时候的模拟url的请求
synchronized
香水浓
java thread
Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然
maven 简单实用教程
AdyZhang
maven
1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具。目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。 1.2. Maven资源 见官方网站;The 5 minute test,官方简易入门文档;Getting Started Tutorial,官方入门文档;Build Coo
Android 通过 intent传值获得null
aijuans
android
我在通过intent 获得传递兑现过的时候报错,空指针,我是getMap方法进行传值,代码如下 1 2 3 4 5 6 7 8 9
public
void
getMap(View view){
Intent i =
apache 做代理 报如下错误:The proxy server received an invalid response from an upstream
baalwolf
response
网站配置是apache+tomcat,tomcat没有报错,apache报错是:
The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /. Reason: Error reading fr
Tomcat6 内存和线程配置
BigBird2012
tomcat6
1、修改启动时内存参数、并指定JVM时区 (在windows server 2008 下时间少了8个小时)
在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数:
window下, 在catalina.bat最前面
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms5
Karam与TDD
bijian1013
Karam TDD
一.TDD
测试驱动开发(Test-Driven Development,TDD)是一种敏捷(AGILE)开发方法论,它把开发流程倒转了过来,在进行代码实现之前,首先保证编写测试用例,从而用测试来驱动开发(而不是把测试作为一项验证工具来使用)。
TDD的原则很简单:
a.只有当某个
[Zookeeper学习笔记之七]Zookeeper源代码分析之Zookeeper.States
bit1129
zookeeper
public enum States {
CONNECTING, //Zookeeper服务器不可用,客户端处于尝试链接状态
ASSOCIATING, //???
CONNECTED, //链接建立,可以与Zookeeper服务器正常通信
CONNECTEDREADONLY, //处于只读状态的链接状态,只读模式可以在
【Scala十四】Scala核心八:闭包
bit1129
scala
Free variable A free variable of an expression is a variable that’s used inside the expression but not defined inside the expression. For instance, in the function literal expression (x: Int) => (x
android发送json并解析返回json
ronin47
android
package com.http.test;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import
一份IT实习生的总结
brotherlamp
PHP php资料 php教程 php培训 php视频
今天突然发现在不知不觉中自己已经实习了 3 个月了,现在可能不算是真正意义上的实习吧,因为现在自己才大三,在这边撸代码的同时还要考虑到学校的功课跟期末考试。让我震惊的是,我完全想不到在这 3 个月里我到底学到了什么,这是一件多么悲催的事情啊。同时我对我应该 get 到什么新技能也很迷茫。所以今晚还是总结下把,让自己在接下来的实习生活有更加明确的方向。最后感谢工作室给我们几个人这个机会让我们提前出来
据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码
bylijinnan
java
public class ScalesBalance {
/**
* 题目:
* 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 (假设N无限大,但一种重量的砝码只有一个)
* 将重物放到天平左侧,问在两边如何添加砝码使两边平衡
*
* 分析:
* 三进制
* 我们约定括号表示里面的数是三进制,例如 47=(1202
dom4j最常用最简单的方法
chiangfai
dom4j
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip
解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要
简单HBase笔记
chenchao051
hbase
一、Client-side write buffer 客户端缓存请求 描述:可以缓存客户端的请求,以此来减少RPC的次数,但是缓存只是被存在一个ArrayList中,所以多线程访问时不安全的。 可以使用getWriteBuffer()方法来取得客户端缓存中的数据。 默认关闭。 二、Scan的Caching 描述: next( )方法请求一行就要使用一次RPC,即使
mysqldump导出时出现when doing LOCK TABLES
daizj
mysql mysqdump 导数据
执行 mysqldump -uxxx -pxxx -hxxx -Pxxxx database tablename > tablename.sql
导出表时,会报
mysqldump: Got error: 1044: Access denied for user 'xxx'@'xxx' to database 'xxx' when doing LOCK TABLES
解决
CSS渲染原理
dcj3sjt126com
Web
从事Web前端开发的人都与CSS打交道很多,有的人也许不知道css是怎么去工作的,写出来的css浏览器是怎么样去解析的呢?当这个成为我们提高css水平的一个瓶颈时,是否应该多了解一下呢?
一、浏览器的发展与CSS
《阿甘正传》台词
dcj3sjt126com
Part Ⅰ:
《阿甘正传》Forrest Gump经典中英文对白
Forrest: Hello! My names Forrest. Forrest Gump. You wanna Chocolate? I could eat about a million and a half othese. My momma always said life was like a box ochocol
Java处理JSON
dyy_gusi
json
Json在数据传输中很好用,原因是JSON 比 XML 更小、更快,更易解析。
在Java程序中,如何使用处理JSON,现在有很多工具可以处理,比较流行常用的是google的gson和alibaba的fastjson,具体使用如下:
1、读取json然后处理
class ReadJSON
{
public static void main(String[] args)
win7下nginx和php的配置
geeksun
nginx
1. 安装包准备
nginx : 从nginx.org下载nginx-1.8.0.zip
php: 从php.net下载php-5.6.10-Win32-VC11-x64.zip, php是免安装文件。
RunHiddenConsole: 用于隐藏命令行窗口
2. 配置
# java用8080端口做应用服务器,nginx反向代理到这个端口即可
p
基于2.8版本redis配置文件中文解释
hongtoushizi
redis
转载自: http://wangwei007.blog.51cto.com/68019/1548167
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件。采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务。下面是Redis2.8.9的配置文
第五章 常用Lua开发库3-模板渲染
jinnianshilongnian
nginx lua
动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。
如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-r
JZSearch大数据搜索引擎
颠覆者
JavaScript
系统简介:
大数据的特点有四个层面:第一,数据体量巨大。从TB级别,跃升到PB级别;第二,数据类型繁多。网络日志、视频、图片、地理位置信息等等。第三,价值密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒。第四,处理速度快。最后这一点也是和传统的数据挖掘技术有着本质的不同。业界将其归纳为4个“V”——Volume,Variety,Value,Velocity。大数据搜索引
10招让你成为杰出的Java程序员
pda158
java 编程 框架
如果你是一个热衷于技术的
Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出。
1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的。没有 OOPS 的坚实基础,就领会不了像 Java 这些面向对象编程语言
tomcat之oracle连接池配置
小网客
oracle
tomcat版本7.0
配置oracle连接池方式:
修改tomcat的server.xml配置文件:
<GlobalNamingResources>
<Resource name="utermdatasource" auth="Container"
type="javax.sql.DataSou
Oracle 分页算法汇总
vipbooks
oracle sql 算法 .net
这是我找到的一些关于Oracle分页的算法,大家那里还有没有其他好的算法没?我们大家一起分享一下!
-- Oracle 分页算法一
select * from (
select page.*,rownum rn from (select * from help) page
-- 20 = (currentPag