ARTS打卡第四周

LeetCode算法与社交媒体必要性探讨
博客包含算法、评论、技巧和分享四部分。算法部分涉及LeetCode题目,反转32位无符号整数的位。评论部分讨论社交媒体,认为我们可能不需要社交网站。技巧部分提及查看和设置数据库最大连接数。分享部分讲述成为重要且优秀人才的方法。

Algorithm: Leetcode:190. Reverse bits of a given 32 bits unsigned integer.

Example 1:
Input: 00000010100101000001111010011100
Output: 00111001011110000010100101000000
Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.

Example 2:
Input: 11111111111111111111111111111101
Output: 10111111111111111111111111111111
Explanation: The input binary string 11111111111111111111111111111101 represents the unsigned integer 4294967293, so return 3221225471 which its binary representation is 10101111110010110010011101101001.
 
Note:
Note that in some languages such as Java, there is no unsigned integer type. In this case, both input and output will be given as signed integer type and should not affect your implementation, as the internal binary representation of the integer is the same whether it is signed or unsigned.
In Java, the compiler represents the signed integers using 2's complement notation. Therefore, in Example 2 above the input represents the signed integer -3 and the output represents the signed integer -1073741825.

思路:

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int result = 0;
        for(int i=0; i<32; i++) {
            result |= ((n >>> i) & 1) << (31 - i);
        }
        return result;
    }
}

Review: We Don’t Need Social Media

Facebook的联合创始人Chris Hughes 在一次公开演讲中表示,会对这一社交巨头进行分拆,以避免反垄断法的惩罚,同时他希望这样能够促进创新和竞争。

Hughes 和其他的一些人重新思考了他们曾经创造的这种“注意力经济”带来的作用和好处。他们希望政府出面制定法律来限制科技垄断企业的权利。他认为适宜Facebook和其他社交企业创造更好的产品的市场环境已经消失了,现在的市场环境缺乏对用户隐私的保护。
Nick Srnicek(一位作者)的观点是:正是为了应对激烈的竞争,才需要不断收集数据,这和企业的规模没有关系。政府如果鼓励竞争,将会加剧这一问题。并且法规可以改变商业环境,但不一定能改变商业模式。

但是Hughes认为竞争能够带来好的结果。事实说明,很少有人注销其Facebook账号,因为他们没有其他选择。

但是文章作者又提出了一个观点:为什么一定要选择一家社交网站呢?我们是不是根本不需要社交网站?

我们不需要社交网站来帮助企业和政府监视我们的生活,也不需要社交网站让骚扰和跟踪变得容易,也不需要社交网站传播阴谋和暴力,也不需要社交网站干扰我们的民主言论或者用反科学的无意义的东西干扰我们的思想。

看来我们真的不需要社交网站,真正需要社交网站的是那些创造它的人,尽管他们自己用的很少,但他们要靠它赚钱。

事实上,我们并不需要社交网站。与其期待通过规章制度来推到像Facebook这样的垄断企业,来建立一个新的社交网站,倒不如趁这个机会好好想想是否有这个必要(建立新的社交网站)。社交媒体帮我们建立的联系是脆弱的,通过社交媒体观察到的世界是被包装过的,我们把时间花在别的任何地方都比花在社交媒体上好。我们需要的并不是有能替代Facebook的社交媒体的世界,而是一个压根儿就没有社交媒体的世界。

Words and phrases:
hava second thoughts:重新思考
step in to:介入

Tip:

查看和设置数据库最大连接数

set GLOBAL max_connections=251;

show variables like '%max_connections';

Share:

什么是重要但没那么优秀的人才
我们首先要做好自己的工作,成为对公司重要的人,虽然我可以被替换,但因为我重要,公司也不回轻易替换我。在此基础上,努力成为优秀的人,让自己渐渐变得不容易被替代,将主动权掌握在自己手上。
成为重要的人才,需要机遇,因为如果你做的工作对公司来说就不是重要的,那么你就很难成为重要的人。成为优秀的人,就完全靠自己了,在此可以借鉴《如何找到自己的长处》,只有在自己的长处上,努力一下会有很大的进步,在自己不擅长的领域,可能努力了,成效也不大。所以我们要尝试找到自己的长处,建立起自己的优势,而不要一直在自己不擅长的领域勤(庸)勤(庸)恳(碌)恳(碌)。

### ARTS打卡 Java 学习或项目进展 #### 一、Algorithm 算法练习 在算法方面,最近研究了回文验证问题中的双指针方法。通过实现 `validPalindrome` 函数来判断给定字符串是否可以通过删除最多一个字符形成回文串[^2]。 ```cpp class Solution { public: bool validPalindrome(string s) { int i = 0; int j = s.size() - 1; int diffCount = 0; while (i < j) { if (s[i] == s[j]) { ++i; --j; } else { if (diffCount > 0) return false; // 尝试移除左边或右边的一个字符并继续比较剩余部分 string sub1 = s.substr(i + 1, j - i); string sub2 = s.substr(i, j - i); return is_palindrome(sub1) || is_palindrome(sub2); } } return true; // 辅助函数用于检测子串是否为回文 auto is_palindrome = [](const std::string& str){ int l = 0, r = str.length() - 1; while(l<r && str[l]==str[r]){ ++l;--r; } return l>=r; }; } }; ``` 此版本改进了原始逻辑,在遇到不匹配的情况时不再直接修改原字符串而是创建两个新的子串分别测试其合法性,从而提高了代码可读性和效率。 #### Review 技术文章阅读心得 关于数据库操作的学习笔记中提到 MySQL 支持四种不同的事务隔离级别:未提交读(Read Uncommitted),已提交读(Read Committed),可重复读(Repeatable Read),序列化(Serializable)[^1]。每种级别的特性决定了并发环境下数据的一致性程度以及性能表现之间的权衡关系。 另外还探讨了两种常见的锁机制——悲观锁(Pessimistic Locking) 和乐观锁(Optimistic Locking) 的原理及其适用场景: - **悲观锁** 假设冲突不可避免,因此总是先锁定资源再执行更新动作; - **乐观锁** 则认为大多数情况下不会发生竞争,仅当实际发生写入时才检查是否有其他更改影响到目标对象。 这两种策略各有优劣,具体选择取决于应用的具体需求和环境特点。 #### Tip 技巧总结 对于上述提及的内容,建议开发者们理解各自系统的默认配置,并根据业务逻辑调整合适的参数设置;同时也要熟悉如何利用编程语言提供的工具去处理并发控制问题,比如 Java 中可以借助框架如 Spring 提供的支持简化分布式事务管理过程。 #### Share 经验交流 分享过程中发现很多同学对多线程下的共享变量可见性和原子性的概念存在误解。实际上,Java 内存模型规定了 volatile 关键字能保证变量的即时可见性但不具备原子性保障,而 synchronized 或者 ReentrantLock 可以提供更强大的同步功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值