- 浏览: 1535694 次
- 性别:
- 来自: 厦门
-
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
d
转自:来源忘记了。
/** * JavaGGDataSource.java 2011-3-4 上午09:21:05 */ package test.datasource; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.Driver; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.ReentrantLock; import javax.sql.DataSource; /** * @author linzq * */ public class JavaGGDataSource implements DataSource { // 连接队列 private ConcurrentLinkedQueue<_Connection> connQueue = new ConcurrentLinkedQueue<_Connection>(); // 存放所有连接容器 private List<_Connection> conns = new ArrayList<_Connection>(); private Driver driver = null; private String jdbcUrl = null; private String user = null; private String password = null; // -1为不限制连接数 private int maxActive = -1; private String driverClass = null; // 默认为4小时,即4小时没有任何sql操作就把所有连接重新建立连接 private int timeout = 1000 * 60 * 60 * 4; private AtomicLong lastCheckout = new AtomicLong( System .currentTimeMillis()); private AtomicInteger connCount = new AtomicInteger(); // 线程锁,主要用于新建连接和清空连接时 private ReentrantLock lock = new ReentrantLock(); public void closeAllConnection() { } /** * * 归还连接给连接池 * * * * @param conn * *@date 2009-8-13 * *@author eric.chan */ public void offerConnection(_Connection conn) { connQueue.offer(conn); } @Override public Connection getConnection() throws SQLException { return getConnection(user, password); } /** * * 从池中得到连接,如果池中没有连接,则建立新的sql连接 * * * * @param username * * @param password * * @author eric.chan */ @Override public Connection getConnection(String username, String password) throws SQLException { checkTimeout(); _Connection conn = connQueue.poll(); if (conn == null) { if (maxActive > 0 && connCount.get() >= maxActive) { for (;;) { // 采用自旋方法 从已满的池中得到一个连接 conn = connQueue.poll(); if (conn != null) break; else continue; } } lock.lock(); try { if (maxActive > 0 && connCount.get() >= maxActive) { // 处理并发问题 return getConnection(username, password); } Properties info = new Properties(); info.put("user", username); info.put("password", password); Connection conn1 = loadDriver().connect(jdbcUrl, info); conn = new _Connection(conn1, this); int c = connCount.incrementAndGet();// 当前连接数加1 conns.add(conn); System.out.println("info : init no. " + c + " connectioned"); } finally { lock.unlock(); } } lastCheckout.getAndSet(System.currentTimeMillis()); return conn.getConnection(); } /** * * 检查最后一次的连接时间 * * * * @throws SQLException * *@date 2009-8-13 * *@author eric.chan */ private void checkTimeout() throws SQLException { long now = System.currentTimeMillis(); long lt = lastCheckout.get(); if ((now - lt) > timeout) { _Connection conn = null; lock.lock(); try { if (connCount.get() == 0) return; while ((conn = connQueue.poll()) != null) { System.out.println("connection " + conn + " close "); conn.close(); conn = null; } for (_Connection con : conns) { con.close(); } conns.clear(); System.out.println("info : reset all connections"); // 重置连接数计数器 connCount.getAndSet(0); lastCheckout.getAndSet(System.currentTimeMillis()); } finally { lock.unlock(); } } } /** * * * * @return * *@date 2009-8-13 * *@author eric.chan */ private Driver loadDriver() { if (driver == null) { try { driver = (Driver) Class.forName(driverClass).newInstance(); } catch (ClassNotFoundException e) { System.out.println("error : can not find driver class " + driverClass); } catch (Exception e) { e.printStackTrace(); } } return driver; } @Override public PrintWriter getLogWriter() throws SQLException { return null; } @Override public int getLoginTimeout() throws SQLException { return 0; } @Override public void setLogWriter(PrintWriter out) throws SQLException { } @Override public void setLoginTimeout(int seconds) throws SQLException { } @Override public boolean isWrapperFor(Class iface) throws SQLException { throw new SQLException("no Implemented isWrapperFor method"); } @Override public <T> T unwrap(Class<T> iface) throws SQLException { throw new SQLException("no Implemented unwrap method"); } public String getJdbcUrl() { return jdbcUrl; } public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } public String getUsername() { return user; } public void setUsername(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getDriverClass() { return driverClass; } public void setDriverClass(String driverClass) { this.driverClass = driverClass; } public int getTimeout() { return timeout; } public void setTimeout(int timeout) { this.timeout = timeout * 1000; } public void setMaxActive(int maxActive) { this.maxActive = maxActive; } public int getMaxActive() { return maxActive; } } /** * 数据连接的自封装 ,是java.sql.Connection的一个钩子,主要是处理close方法 * * @author linzq * */ class _Connection implements InvocationHandler { private final static String CLOSE_METHOD_NAME = "close"; private final Connection conn; private final JavaGGDataSource ds; _Connection(Connection conn, JavaGGDataSource ds) { this.conn = conn; this.ds = ds; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object obj = null; // 判断是否调用了close的方法,如果调用close方法则把连接置为无用状态 if (CLOSE_METHOD_NAME.equals(method.getName())) { // 归还连接给连接池 ds.offerConnection(this); } else { // 运行非close的方法 obj = method.invoke(conn, args); } return obj; } public Connection getConnection() { // 返回数据库连接conn的接管类,以便截住close方法 Connection conn2 = (Connection) Proxy.newProxyInstance(conn.getClass() .getClassLoader(), new Class[] { Connection.class }, this); return conn2; } public void close() throws SQLException { // 调用真正的close方法,一但调用此方法就直接关闭连接 if (conn != null && !conn.isClosed()) conn.close(); } }
/** * TestGG.java 2011-3-4 上午10:02:14 */ package test.datasource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @author linzq * */ public class TestGG { /** * @param args */ public static void main(String[] args) { JavaGGDataSource ds = new JavaGGDataSource(); ds.setDriverClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://localhost:3306/test"); ds.setUsername("root"); ds.setPassword("123456"); ds.setTimeout(300); // ds.setMaxActive(60); for (int i = 0; i < 20; i++) { new GG(ds).start(); } } static class GG extends Thread { JavaGGDataSource ds = null; long l = System.currentTimeMillis(); public GG(JavaGGDataSource ds) { this.ds = ds; } static final String sql = "insert into testgg(col1,cols) values (?,?)"; static final String selectsql = "select * from testgg where id=?"; public void run() { for (int t = 0; t < 10000; t++) { Connection conn = null; try { conn = ds.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); // 以下为insert ps.setInt(1, 133664); ps.setString(2, "ddd"); ps.executeUpdate(); ResultSet rs = ps.getGeneratedKeys(); // 以下为select // 取得自增长ID ps = conn.prepareStatement(selectsql); if (rs.next()) { // System.out.println(rs); ps.setInt(1, rs.getInt("GENERATED_KEY"));// 表的字段名字也可以用字段下标值 } rs = ps.executeQuery(); while (rs.next()) { rs.getInt("id"); rs.getInt("col1"); } rs.close(); ps.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { // ds.offerConnection(conn); conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } System.out.println(System.currentTimeMillis() - l); } } }
数据库表结构:
CREATE TABLE `testgg` ( `id` int(11) NOT NULL auto_increment, `col1` int(11) default NULL, `cols` varchar(200) default NULL, PRIMARY KEY (`id`) )
d
发表评论
-
Java线程:线程状态的转换
2012-01-30 16:09 933转自:http://lavasoft.blog.51cto.c ... -
多个线程访问共享对象和数据的方式
2011-10-26 08:15 1156(1)如果每个线程执行的代码相同,可以使用同一个Runnabl ... -
线程同步通信
2011-10-22 19:48 880看传智播客张孝祥讲的一个例子。 子线程循环10次 ... -
Java threads may not use all your CPUs
2010-06-10 11:51 1072Enterprise-level applications o ... -
java.util.concurrent.CountDownLatch
2009-12-13 10:53 1902import java.util.concurrent. ... -
java.util.concurrent.Exchanger
2009-12-13 10:52 2952d import java.util.concurrent. ... -
java.util.concurrent.Semaphore
2009-12-11 22:25 2651http://zhidao.baidu.com/questio ... -
java.util.concurrent.CyclicBarrier
2009-12-11 11:46 4722在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且 ...
相关推荐
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
labelme标注的json转mask掩码图,用于分割数据集 批量转化,生成cityscapes格式的数据集
(参考GUI)MATLAB GUI漂浮物垃圾分类检测.zip
人脸识别项目源码实战
人脸识别项目实战
本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)软件。建议采用matlab2016 Rb及以上版本打开。(若需要其他版本可联系代为转换) CSDN详情地址:https://blog.csdn.net/qq_50594161/article/details/146242453sharetype=blogdetail&sharerId=146242453&sharerefer=PC&sharesource=qq_50594161&spm=1011.2480.3001.8118
实战练习分词、创建词表、文本处理
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
人脸识别项目源码实战
学生信息管理系统是一个基于Java Web技术的综合性管理平台。通过此系统,可以实现对学生、教师、选课信息等的动态管理, 提升学校管理效率。系统采用分层架构设计,前端使用HTML、CSS,JavaScript和jQuery,后端基于Servlet,JSP和Spring框架,数据库采用MySQL。主要有四个大功能,学生管理( 增加学生信息、删除学生信息、修改学生信息、查询学生信息)、教师管理(增加教师信息、删除教师信息、修改教师信息、查询教师信息)、选课信息管理(添加选课、查询选课情况、删除选课记录)、系统管理( 登录与注册功能、 用户角色管理(老师,学生,管理员)、系统日志查看)。 技术架构 1.前端技术 HTML,CSS:静态页面布局与样式 JavaScript,jQuery:动态交互、DOM操作和AJAX请求 2.后端技术 Servlet:控制层,处理用户请求 JSP:页面动态生成 Spring:依赖注入,业务逻辑分离 3.数据库 MySQL:存储学生、教师,课程等数据 JDBC:数据库连接与操作
本课程是 PHP 进阶系列之 Swoole 入门精讲,系统讲解 Swoole 在 PHP 高性能开发中的应用,涵盖 协程、异步编程、WebSocket、TCP/UDP 通信、任务投递、定时器等核心功能。通过理论解析和实战案例相结合,帮助开发者掌握 Swoole 的基本使用方法及其在高并发场景下的应用。 适用人群: 适合 有一定 PHP 基础的开发者、希望提升后端性能优化能力的工程师,以及 对高并发、异步编程感兴趣的学习者。 能学到什么: 掌握 Swoole 基础——理解 Swoole 的核心概念,如协程、异步编程、事件驱动等。 高并发处理——学习如何使用 Swoole 构建高并发的 Web 服务器、TCP/UDP 服务器。 实战项目经验——通过案例实践,掌握 Swoole 在 WebSocket、消息队列、微服务等场景的应用。 阅读建议: 建议先掌握 PHP 基础,了解 HTTP 服务器和并发处理相关概念。学习过程中,结合 官方文档和实际项目 进行实践,加深理解,逐步提升 Swoole 开发能力。
人脸识别项目实战
人脸识别项目实战
功能简介:本工具可实现批量对照片文件的人脸识别,并按指定分辨率进行转换保存。 可为人脸识别采集系统提供很好的辅助工具。 软件基本于OPENVC开发,识别精确,转换高效。 人脸识别工具 +人脸采集处理
内容概要:本文探讨了利用肌长变化反馈控制(FCM-ML)和演员-评论家强化学习(ACRL-NGN)来有效实现人体上肢和下肢无意识姿态稳定的算法方法。通过构建一个包含949条肌肉和22个关节的全身计算模型,在不同初始姿势的情况下进行模拟试验,验证了这些方法的有效性和鲁棒性,结果显示FCM-ML方法比其他传统方法更适用于此类任务。研究指出人类及其他脊椎动物在无意识状态下,通过抗拮抗性的肌肉长度变化反馈机制来维持舒适状态下的自然身体姿势(NBP)。此外,研究还表明这种控制策略有助于机器人设计、运动员训练以及康复患者的治疗。 适用人群:生物力学、机器人学以及神经科学领域的研究人员、工程师,以及关注人体姿态控制及其应用的学者和技术人员。 使用场景及目标:①解释人和非人的脊椎动物如何在无意识情况下维持最佳姿势,特别是处于重力环境中的自然身体姿势(NBP)。②为机器人肌肉控制提供理论支持和发展方向,特别是在模拟多肌肉协调控制方面。③指导运动训练及病患恢复计划的设计与优化。 其他说明:研究发现ACRL-NGN结合FCM-ML不仅能够迅速有效地实现期望的姿态稳定性,而且不需要对肌肉分类,这使其在复
反编译apk重要的工具之一
人脸识别项目实战
FDTD复现圆偏振超透镜 ,FDTD; 复现; 圆偏振; 超透镜;,FDTD技术在超透镜复现圆偏振的实践
手势识别项目实战